function spread_signal = spread_data(symbols, spreading_code)
% spread_data - 对数据进行扩频处理
%
% 输入参数:
%   symbols        - 调制后的符号
%   spreading_code - 扩频码（芯片序列）
%
% 输出参数:
%   spread_signal  - 扩频后的信号

% 获取参数
spreading_factor = length(spreading_code);
num_symbols = length(symbols);

% 初始化扩频后的信号
spread_signal = zeros(1, num_symbols * spreading_factor);

% 对每个符号进行扩频
for i = 1:num_symbols
    % 当前符号
    symbol = symbols(i);
    
    % 计算当前符号在扩频信号中的起始位置
    start_idx = (i-1) * spreading_factor + 1;
    end_idx = i * spreading_factor;
    
    % 扩频：将符号乘以扩频码
    spread_signal(start_idx:end_idx) = symbol * spreading_code;
end

% 添加一些随机相位偏移（模拟实际系统中的相位不确定性）
phase_offset = 0.01 * randn();
spread_signal = spread_signal * exp(1i * phase_offset);

end 